package cn.jja8.networkTransmission;

import java.io.IOException;

public class PutPassageway implements Passageway{
    DataClient 连接;
    String 名字;

    public String get名字() {
        return 名字;
    }

    public DataClient get连接() {
        return 连接;
    }

    /**
     * 构造一个通道
     * @param 名字 通道名字
     */
    PutPassageway(DataClient 连接, String 名字) {
        this.连接 = 连接;
        this.名字 = 名字;
        注册();
    }
    /**
     * 重新设置成新的连接，如果之前的连接已经失效可以调用此方法
     * */
    public void set连接(DataClient 连接){
        this.连接 = 连接;
        注册();
    }
    private void 注册(){
        连接.注册数据接收器(名字 +"_put",this::收到put请求);
    }
    /**
     * 发送put请求
     * */
    public void 发送put请求(byte[] b数据) throws IOException {
        连接.发送数据(名字 +"_put",b数据);
    }
    /**
     * put请求接收器
     * */
    public interface PutReceive{
        void 新put请求(byte[] 数据, PutPassageway 通道);
    }
    private PutReceive putReceive;
    private void 收到put请求(byte[] 数据, DataClient dataClient) {
        if (putReceive == null) {
            return;
        }
        putReceive.新put请求(数据,this);
    }
    /**
     * 设置put请求接收器
     * */
    public void setPut请求接收器(PutReceive put请求接收器){
        putReceive = put请求接收器;
    }
}
